热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

连续函数|掩蔽_OpenCV完整例程89.带阻滤波器的传递函数

篇首语:本文由编程笔记#小编为大家整理,主要介绍了OpenCV完整例程89.带阻滤波器的传递函数相关的知识,希望对你有一定的参考价值。【OpenCV完整例

篇首语:本文由编程笔记#小编为大家整理,主要介绍了OpenCV 完整例程89. 带阻滤波器的传递函数相关的知识,希望对你有一定的参考价值。



【OpenCV 完整例程】89. 带阻滤波器的传递函数



欢迎关注 『OpenCV 完整例程 100 篇』 系列,持续更新中
欢迎关注 『Python小白的OpenCV学习课』 系列,持续更新中





5.1 带阻与带通

空间域和频率域线性滤波器可以分为四类:低通滤波器、高通滤波器、带通滤波器和带阻滤波器。高通滤波和低通滤波都是在整个频率矩形上操作,带通滤波和带阻滤波则是对特定频带处理,属于选择性滤波。

带阻滤波器(bandstop filters,简称BSF)是指能通过大多数频率分量、但将某些范围的频率分量衰减到极低水平的滤波器。带通滤波器(band-pass filter)是一个允许特定频段的波通过同时屏蔽其他频段的设备。比如RLC振荡回路就是一个模拟带通滤波器。

频率域的高通滤波器可以由低通滤波器推导而来。类似地,频率域中的带通和带阻滤波器的传递函数,可以通过低通滤波器和高通滤波器的组合来构建。

理想带阻滤波器(IBRF) 的传递函数为:





H


(


u


,


v


)


=











0


,


 


(



C


0






W


/


2


)





D


(


u


,


v


)





(



C


0



+


W


/


2


)










1


,


 


e


l


s


e









H(u,v)=\\begincases 0,\\ (C_0-W/2) \\leq D(u,v) \\leq (C_0+W/2)\\\\ 1,\\ else \\endcases


H(u,v)=0, (C0W/2)D(u,v)(C0+W/2)1, else

高斯带阻滤波器(GBRF) 的传递函数为:





H


(


u


,


v


)


=


1






e






[





D


2



(


u


,


v


)






C


0


2





D


(


u


,


v


)


W





]


2






H(u,v)=1-e^-[ \\frac D^2(u,v) - C_0^2 D(u,v)W]^2


H(u,v)=1e[D(u,v)WD2(u,v)C02]2

巴特沃斯带阻滤波器(BBRF) 的传递函数为:






H


(


u


,


v


)


=



1



1


+


[




D


(


u


,


v


)


W





D


2



(


u


,


v


)






C


0


2






]



2


n







H(u,v)= \\frac 1 1 +[ \\frac D(u,v)W D^2(u,v) - C_0^2]^2n


H(u,v)=1+[D2(u,v)C02D(u,v)W]2n1




例程 8.28 带阻滤波器的传递函数

# OpenCVdemo08.py
# Demo08 of OpenCV
# 8. 图像的频率域滤波
# Copyright 2021 Youcans, XUPT
# Crated:2021-12-30
# 例程 8.28 带阻滤波器的传递函数
def ideaBondResistFilter(shape, radius=10, w=5): # 理想带阻滤波器
u, v = np.meshgrid(np.arange(shape[1]), np.arange(shape[0]))
D = np.sqrt((u - shape[1]//2)**2 + (v - shape[0]//2)**2)
D0 = radius
halfW = w/2
kernel &#61; np.piecewise(D, [D<&#61;D0&#43;halfW, D<&#61;D0-halfW], [1, 0])
kernel &#61; 1 - kernel # 带阻
return kernel
def gaussBondResistFilter(shape, radius&#61;10, w&#61;5): # 高斯带阻滤波器
# 高斯滤波器&#xff1a;# Gauss &#61; 1/(2*pi*s2) * exp(-(x**2&#43;y**2)/(2*s2))
u, v &#61; np.meshgrid(np.arange(shape[1]), np.arange(shape[0]))
D &#61; np.sqrt((u - shape[1]//2)**2 &#43; (v - shape[0]//2)**2)
C0 &#61; radius
kernel &#61; 1 - np.exp(-(D-C0)**2 / (w**2))
return kernel
def butterworthBondResistFilter(shape, radius&#61;10, w&#61;5, n&#61;1): # 巴特沃斯带阻滤波
u, v &#61; np.meshgrid(np.arange(shape[1]), np.arange(shape[0]))
D &#61; np.sqrt((u - shape[1]//2)**2 &#43; (v - shape[0]//2)**2)
C0 &#61; radius
epsilon &#61; 1e-8 # 防止被 0 除
kernel &#61; 1.0 / (1.0 &#43; np.power(D*w/(D**2-C0**2&#43;epsilon), 2*n))
return kernel
# 理想、高斯、巴特沃斯带阻滤波器传递函数
shape &#61; [128, 128]
radius &#61; 32
IBRF &#61; ideaBondResistFilter(shape, radius&#61;radius)
GBRF &#61; gaussBondResistFilter(shape, radius&#61;radius)
BBRF &#61; butterworthBondResistFilter(shape, radius&#61;radius)
filters &#61; ["IBRF", "GBRF", "BBRF"]
u, v &#61; np.mgrid[-1:1:2.0/shape[0], -1:1:2.0/shape[1]]
fig &#61; plt.figure(figsize&#61;(10, 8))
for i in range(3):
hpFilter &#61; eval(filters[i]).copy()
ax1 &#61; fig.add_subplot(3, 3, 3*i&#43;1)
ax1.imshow(hpFilter, &#39;gray&#39;)
ax1.set_title(filters[i]), ax1.set_xticks([]), ax1.set_yticks([])
ax2 &#61; plt.subplot(3,3,3*i&#43;2, projection&#61;&#39;3d&#39;)
ax2.set_title("transfer function")
ax2.plot_wireframe(u, v, hpFilter, rstride&#61;2, linewidth&#61;0.5, color&#61;&#39;c&#39;)
ax2.set_xticks([]), ax2.set_yticks([]), ax2.set_zticks([])
ax3 &#61; plt.subplot(3,3,3*i&#43;3)
profile &#61; hpFilter[shape[0]//2:, shape[1]//2]
ax3.plot(profile), ax3.set_title("profile"), ax3.set_xticks([]), ax3.set_yticks([])
plt.show()



&#xff08;本节完&#xff09;



版权声明&#xff1a;

youcans&#64;xupt 原创作品&#xff0c;转载必须标注原文链接

Copyright 2021 youcans, XUPT

Crated&#xff1a;2022-2-1





欢迎关注 『OpenCV 完整例程 100 篇』 系列&#xff0c;持续更新中
欢迎关注 『Python小白的OpenCV学习课』 系列&#xff0c;持续更新中


【OpenCV 完整例程】01. 图像的读取&#xff08;cv2.imread&#xff09;
【OpenCV 完整例程】02. 图像的保存&#xff08;cv2.imwrite&#xff09;
【OpenCV 完整例程】03. 图像的显示&#xff08;cv2.imshow&#xff09;
【OpenCV 完整例程】04. 用 matplotlib 显示图像&#xff08;plt.imshow&#xff09;
【OpenCV 完整例程】05. 图像的属性&#xff08;np.shape&#xff09;
【OpenCV 完整例程】06. 像素的编辑&#xff08;img.itemset&#xff09;
【OpenCV 完整例程】07. 图像的创建&#xff08;np.zeros&#xff09;
【OpenCV 完整例程】08. 图像的复制&#xff08;np.copy&#xff09;
【OpenCV 完整例程】09. 图像的裁剪&#xff08;cv2.selectROI&#xff09;
【OpenCV 完整例程】10. 图像的拼接&#xff08;np.hstack&#xff09;
【OpenCV 完整例程】11. 图像通道的拆分&#xff08;cv2.split&#xff09;
【OpenCV 完整例程】12. 图像通道的合并&#xff08;cv2.merge&#xff09;
【OpenCV 完整例程】13. 图像的加法运算&#xff08;cv2.add&#xff09;
【OpenCV 完整例程】14. 图像与标量相加&#xff08;cv2.add&#xff09;
【OpenCV 完整例程】15. 图像的加权加法&#xff08;cv2.addWeight&#xff09;
【OpenCV 完整例程】16. 不同尺寸的图像加法
【OpenCV 完整例程】17. 两张图像的渐变切换
【OpenCV 完整例程】18. 图像的掩模加法
【OpenCV 完整例程】19. 图像的圆形遮罩
【OpenCV 完整例程】20. 图像的按位运算
【OpenCV 完整例程】21. 图像的叠加
【OpenCV 完整例程】22. 图像添加非中文文字
【OpenCV 完整例程】23. 图像添加中文文字
【OpenCV 完整例程】23. 图像添加中文文字
【OpenCV 完整例程】24. 图像的仿射变换
【OpenCV 完整例程】25. 图像的平移
【OpenCV 完整例程】26. 图像的旋转&#xff08;以原点为中心&#xff09;
【OpenCV 完整例程】27. 图像的旋转&#xff08;以任意点为中心&#xff09;
【OpenCV 完整例程】28. 图像的旋转&#xff08;直角旋转&#xff09;
【OpenCV 完整例程】29. 图像的翻转&#xff08;cv2.flip&#xff09;
【OpenCV 完整例程】30. 图像的缩放&#xff08;cv2.resize&#xff09;
【OpenCV 完整例程】31. 图像金字塔&#xff08;cv2.pyrDown&#xff09;
【OpenCV 完整例程】32. 图像的扭变&#xff08;错切&#xff09;
【OpenCV 完整例程】33. 图像的复合变换
【OpenCV 完整例程】34. 图像的投影变换
【OpenCV 完整例程】35. 图像的投影变换&#xff08;边界填充&#xff09;
【OpenCV 完整例程】36. 直角坐标与极坐标的转换
【OpenCV 完整例程】37. 图像的灰度化处理和二值化处理
【OpenCV 完整例程】38. 图像的反色变换&#xff08;图像反转&#xff09;
【OpenCV 完整例程】39. 图像灰度的线性变换
【OpenCV 完整例程】40. 图像分段线性灰度变换
【OpenCV 完整例程】41. 图像的灰度变换&#xff08;灰度级分层&#xff09;
【OpenCV 完整例程】42. 图像的灰度变换&#xff08;比特平面分层&#xff09;
【OpenCV 完整例程】43. 图像的灰度变换&#xff08;对数变换&#xff09;
【OpenCV 完整例程】44. 图像的灰度变换&#xff08;伽马变换&#xff09;
【OpenCV 完整例程】45. 图像的灰度直方图
【OpenCV 完整例程】46. 直方图均衡化
【OpenCV 完整例程】47. 图像增强—直方图匹配
【OpenCV 完整例程】48. 图像增强—彩色直方图匹配
【OpenCV 完整例程】49. 图像增强—局部直方图处理
【OpenCV 完整例程】50. 图像增强—直方图统计量图像增强
【OpenCV 完整例程】51. 图像增强—直方图反向追踪
【OpenCV 完整例程】52. 图像的相关与卷积运算
【OpenCV 完整例程】53. Scipy 实现图像二维卷积
【OpenCV 完整例程】54. OpenCV 实现图像二维卷积
【OpenCV 完整例程】55. 可分离卷积核
【OpenCV 完整例程】56. 低通盒式滤波器
【OpenCV 完整例程】57. 低通高斯滤波器
【OpenCV 完整例程】58. 非线性滤波—中值滤波
【OpenCV 完整例程】59. 非线性滤波—双边滤波
【OpenCV 完整例程】60. 非线性滤波—联合双边滤波
【OpenCV 完整例程】61. 导向滤波&#xff08;Guided filter&#xff09;
【OpenCV 完整例程】62. 图像锐化——钝化掩蔽
【OpenCV 完整例程】63. 图像锐化——Laplacian 算子
【OpenCV 完整例程】64. 图像锐化——Sobel 算子
【OpenCV 完整例程】65. 图像锐化——Scharr 算子
【OpenCV 完整例程】66. 图像滤波之低通/高通/带阻/带通
【OpenCV 完整例程】67. 空间域图像增强的综合应用
【OpenCV 完整例程】68. 空间域图像增强的综合应用
【OpenCV 完整例程】69. 连续非周期信号的傅立叶系数
【OpenCV 完整例程】70. 一维连续函数的傅里叶变换
【OpenCV 完整例程】71. 连续函数的取样
【OpenCV 完整例程】72. 一维离散傅里叶变换
【OpenCV 完整例程】73. 二维连续傅里叶变换
【OpenCV 完整例程】74. 图像的抗混叠
【OpenCV 完整例程】75. Numpy 实现图像傅里叶变换
【OpenCV 完整例程】76. OpenCV 实现图像傅里叶变换
【OpenCV 完整例程】77. OpenCV 实现快速傅里叶变换
【OpenCV 完整例程】78. 频率域图像滤波基础
【OpenCV 完整例程】79. 频率域图像滤波的基本步骤
【OpenCV 完整例程】80. 频率域图像滤波详细步骤
【OpenCV 完整例程】81. 频率域高斯低通滤波器
【OpenCV 完整例程】82. 频率域巴特沃斯低通滤波器
【OpenCV 完整例程】83. 频率域低通滤波&#xff1a;印刷文本字符修复
【OpenCV 完整例程】84. 由低通滤波器得到高通滤波器
【OpenCV 完整例程】85. 频率域高通滤波器的应用
【OpenCV 完整例程】86. 频率域滤波应用&#xff1a;指纹图像处理
【OpenCV 完整例程】87. 频率域钝化掩蔽
【OpenCV 完整例程】88. 频率域拉普拉斯高通滤波
【OpenCV 完整例程】89. 带阻滤波器的传递函数



推荐阅读
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 展开全部下面的代码是创建一个立方体Thisexamplescreatesanddisplaysasimplebox.#Thefirstlineloadstheinit_disp ... [详细]
  • 第四章高阶函数(参数传递、高阶函数、lambda表达式)(python进阶)的讲解和应用
    本文主要讲解了第四章高阶函数(参数传递、高阶函数、lambda表达式)的相关知识,包括函数参数传递机制和赋值机制、引用传递的概念和应用、默认参数的定义和使用等内容。同时介绍了高阶函数和lambda表达式的概念,并给出了一些实例代码进行演示。对于想要进一步提升python编程能力的读者来说,本文将是一个不错的学习资料。 ... [详细]
  • Python爬虫中使用正则表达式的方法和注意事项
    本文介绍了在Python爬虫中使用正则表达式的方法和注意事项。首先解释了爬虫的四个主要步骤,并强调了正则表达式在数据处理中的重要性。然后详细介绍了正则表达式的概念和用法,包括检索、替换和过滤文本的功能。同时提到了re模块是Python内置的用于处理正则表达式的模块,并给出了使用正则表达式时需要注意的特殊字符转义和原始字符串的用法。通过本文的学习,读者可以掌握在Python爬虫中使用正则表达式的技巧和方法。 ... [详细]
  • 本文整理了315道Python基础题目及答案,帮助读者检验学习成果。文章介绍了学习Python的途径、Python与其他编程语言的对比、解释型和编译型编程语言的简述、Python解释器的种类和特点、位和字节的关系、以及至少5个PEP8规范。对于想要检验自己学习成果的读者,这些题目将是一个不错的选择。请注意,答案在视频中,本文不提供答案。 ... [详细]
  • 本文介绍了在满足特定条件时如何在输入字段中使用默认值的方法和相应的代码。当输入字段填充100或更多的金额时,使用50作为默认值;当输入字段填充有-20或更多(负数)时,使用-10作为默认值。文章还提供了相关的JavaScript和Jquery代码,用于动态地根据条件使用默认值。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 本文介绍了闭包的定义和运转机制,重点解释了闭包如何能够接触外部函数的作用域中的变量。通过词法作用域的查找规则,闭包可以访问外部函数的作用域。同时还提到了闭包的作用和影响。 ... [详细]
  • 本文介绍了Perl的测试框架Test::Base,它是一个数据驱动的测试框架,可以自动进行单元测试,省去手工编写测试程序的麻烦。与Test::More完全兼容,使用方法简单。以plural函数为例,展示了Test::Base的使用方法。 ... [详细]
  • 也就是|小窗_卷积的特征提取与参数计算
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了卷积的特征提取与参数计算相关的知识,希望对你有一定的参考价值。Dense和Conv2D根本区别在于,Den ... [详细]
  • web.py开发web 第八章 Formalchemy 服务端验证方法
    本文介绍了在web.py开发中使用Formalchemy进行服务端表单数据验证的方法。以User表单为例,详细说明了对各字段的验证要求,包括必填、长度限制、唯一性等。同时介绍了如何自定义验证方法来实现验证唯一性和两个密码是否相等的功能。该文提供了相关代码示例。 ... [详细]
  • 本文讨论了如何在codeigniter中识别来自angularjs的请求,并提供了两种方法的代码示例。作者尝试了$this->input->is_ajax_request()和自定义函数is_ajax(),但都没有成功。最后,作者展示了一个ajax请求的示例代码。 ... [详细]
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
  • Android自定义控件绘图篇之Paint函数大汇总
    本文介绍了Android自定义控件绘图篇中的Paint函数大汇总,包括重置画笔、设置颜色、设置透明度、设置样式、设置宽度、设置抗锯齿等功能。通过学习这些函数,可以更好地掌握Paint的用法。 ... [详细]
  • 用Vue实现的Demo商品管理效果图及实现代码
    本文介绍了一个使用Vue实现的Demo商品管理的效果图及实现代码。 ... [详细]
author-avatar
手机用户2502920645
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有